Welcome to the (provisional) documentation for the \langname
programming language. \langname is designed with the following goals
in mind (in no particular order):

\begin{itemzie}

\item Readability.  If you know English and maybe one other
  programming language, you should be able to pretty much know what is
  going on in most code, without really needing to know \langname.
  There are no strange variables like Perl's {\tt \$_} to perform
  spooky unwritten actions.

\item Consistancy.  Things should work together in a simple and
  elegant way.  We'd like to minimize the number of special cases.

\item Functional programming.  Functions are first-class citizens in
  \langname, and higher-order functions are a perfectly normal way of
  doing things, elegantly supported by the syntax. 

\item Object-oriented programming.  Everything is an object, even
  types and functions and such.  The type system is flexible but
  present; you don't have to specify the types of things, but by doing
  so you can win yourself extra protection and speed.

\item Power.  You should be able to say what you mean clearly and
  concisely, even if what you mean is complicated.


\end{itemize}

That said, let's get cracking!  Let's look at some code, say, to
naievely print out the first ten fibonacci numbers.

\begin{verbatim}

def fib as n {
   if (n <= 1){
     return 1;
   }
   return fib(n-1) + fib(n-2);
};

for 0..10 as x {
   print(fib(x));
};

\end{verbatim}


\langname code looks like an amalgam of a few kinds of things:

\begin{itemize}

\item identifiers. These take the form of strings of alphanumeric
  characters (including underscores), starting with a letter.  The key
  to identifiers is that you can look them up in the right environment
  and get a value.

\item operators and special forms.  We've got most of your standard
  C-style slew of {\tt + - * / == <= >= ...} as well as a few
  operators of our own.  These are secretly the same kind of thing as
  the special forms {\tt if else for ...}, except that the latter set
  only operate in prefix mode.  Many of these operators and special
  forms are just sugar over functions, but a few do more complicated
  things.

\item literals.  

\end{itemize}


